import numpy as np
import matplotlib.pyplot as plt

# 定义函数
def f(x):
    return x**2 - 3*x

# 求导
def df(x):
    return 2*x - 3

# 生成 x 值
x = np.linspace(-2, 4, 100)
y = f(x)
dy = df(x)

# 绘制函数图像和导数图像
plt.figure(figsize=(10, 6))
plt.subplot(2, 1, 1)
plt.plot(x, y, label='y = x^2 - 3x')
plt.xlabel('x')
plt.ylabel('y')
plt.legend()

plt.subplot(2, 1, 2)
plt.plot(x, dy, label="y' = 2x - 3", color='r')
plt.xlabel('x')
plt.ylabel("y'")
plt.axhline(y=0, color='k', linestyle='--')
plt.legend()

plt.tight_layout()
plt.show()

# 判断单调性
critical_point = 3 / 2
print(f"当 x < {critical_point} 时，导数小于 0，函数单调递减。")
print(f"当 x > {critical_point} 时，导数大于 0，函数单调递增。")